package com.uniflow.util;

import java.security.SecureRandom;
import java.util.Base64;

/**
 * 简单的JWT密钥生成工具
 * 生成符合HS512算法要求的512位安全密钥
 */
public class SimpleKeyGenerator {
    
    /**
     * 生成符合HS512要求的安全密钥
     * HS512需要至少512位（64字节）的密钥
     */
    public static String generateHS512Key() {
        // 生成64字节（512位）的随机密钥
        byte[] keyBytes = new byte[64];
        new SecureRandom().nextBytes(keyBytes);
        
        // 转换为Base64编码的字符串
        return Base64.getEncoder().encodeToString(keyBytes);
    }
    
    /**
     * 验证密钥是否符合HS512要求
     */
    public static boolean isValidHS512Key(String key) {
        if (key == null || key.trim().isEmpty()) {
            return false;
        }
        
        try {
            // 尝试解码Base64
            byte[] keyBytes = Base64.getDecoder().decode(key);
            // 检查密钥长度是否至少为64字节（512位）
            return keyBytes.length >= 64;
        } catch (Exception e) {
            // 如果不是有效的Base64，检查原始字符串长度
            return key.length() >= 64;
        }
    }
    
    public static void main(String[] args) {
        System.out.println("=== JWT密钥生成工具 ===");
        
        // 生成新的安全密钥
        String newKey = generateHS512Key();
        System.out.println("\n生成的HS512安全密钥:");
        System.out.println(newKey);
        System.out.println("\n密钥长度: " + newKey.length() + " 字符");
        
        // 验证密钥
        boolean isValid = isValidHS512Key(newKey);
        System.out.println("密钥验证: " + (isValid ? "通过" : "失败"));
        
        // 检查当前配置的密钥
        String currentKey = "uniflow-platform-jwt-secret-key-2024";
        System.out.println("\n当前配置密钥: " + currentKey);
        System.out.println("当前密钥长度: " + currentKey.length() + " 字符");
        System.out.println("当前密钥验证: " + (isValidHS512Key(currentKey) ? "通过" : "失败"));
        
        System.out.println("\n请将生成的新密钥复制到 application.yml 中的 app.jwt.secret 配置项");
    }
}